package Control;

import Daos.*;
import Daos.exceptions.PreexistingEntityException;
import Clases.Usuario;
import Clases.Rol;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceUnit;
import java.util.ArrayList;
import java.util.List;

public class UsuarioController {

    UsuarioJpaController daoUsuario;

    public UsuarioController(EntityManagerFactory factory) {
        daoUsuario = new UsuarioJpaController(factory);
    }

    public String crear(String cod, String nom, String ape, String mail1, String mail2, String dir, String tel, String cel, String login, String pass, String pre, String rol) throws PreexistingEntityException {
        Usuario p = new Usuario();
        Rol r=new Rol();
        p.setCodUser(cod);
        p.setNombres(nom);
        p.setApellidos(ape);
        p.setEmail1(mail1);
        p.setEmail2(mail2);
        p.setDireccion(dir);
        p.setTelefono(tel);
        p.setCelular(cel);
        p.setLogin(login);
        p.setPassword(pass);
        p.setPreRecu(pre);
        r.setIdRol(rol);
        p.setIdRol(r);
        try {
            daoUsuario.create(p);
            return "El registro fue creado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public String editar(String cod, String nom, String ape, String mail1, String mail2, String dir, String tel, String cel, String login, String pass, String pre, String rol) throws PreexistingEntityException {
        Usuario p = new Usuario();
        Rol r=new Rol();
        p.setCodUser(cod);
        p.setNombres(nom);
        p.setApellidos(ape);
        p.setEmail1(mail1);
        p.setEmail2(mail2);
        p.setDireccion(dir);
        p.setTelefono(tel);
        p.setCelular(cel);
        p.setLogin(login);
        p.setPassword(pass);
        p.setPreRecu(pre);
        r.setIdRol(rol);
        p.setIdRol(r);
        try {
            daoUsuario.edit(p);
            return "El registro fue modificado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public String borrar(String cod) throws PreexistingEntityException {
        Usuario p = new Usuario();
        try {
            daoUsuario.destroy(cod);
            return "El registro fue eliminado exitosamente";
        } catch (Exception ex) {
            Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
            return "Error";
        }
    }

    public Usuario buscar(String cod) {
        return daoUsuario.findUsuario(cod);
    }
    public boolean buscarl(String login) {
        return daoUsuario.findUsuarioq(login);
    }
}
